package com.nmsl.system.service.impl;

import java.util.List;
import java.util.Objects;

import com.nmsl.system.controller.FileController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.nmsl.system.mapper.ClinicsMapper;
import com.nmsl.system.domain.Clinics;
import com.nmsl.system.service.IClinicsService;

/**
 * 诊所信息管理Service业务层处理
 *
 * @author jin
 * @date 2025-02-14
 */
@Service
public class ClinicsServiceImpl implements IClinicsService {
    @Autowired
    private ClinicsMapper clinicsMapper;
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 查询诊所信息管理
     *
     * @param clinicId 诊所信息管理主键
     * @return 诊所信息管理
     */
    @Override
    public Clinics selectClinicsByClinicId(Long clinicId) {
        return clinicsMapper.selectClinicsByClinicId(clinicId);
    }

    /**
     * 查询诊所信息管理列表
     *
     * @param clinics 诊所信息管理
     * @return 诊所信息管理
     */
    @Override
    public List<Clinics> selectClinicsList(Clinics clinics) {
        return clinicsMapper.selectClinicsList(clinics);
    }

    /**
     * 新增诊所信息管理
     *
     * @param clinics 诊所信息管理
     * @return 结果
     */
    @Override
    public int insertClinics(Clinics clinics) {
        System.out.println(clinics);
        //如果诊所状态为1，则存入redis
        if (clinics.getStatus() == 1&& clinics.getLogo()!=null) {
            System.out.println("新增logo地址存入redis");
            //存入redis
            redisTemplate.opsForValue().set("logoUrl", clinics.getLogo());
        }
        //调用clinicsMapper的insertClinics方法，将诊所信息插入数据库
        return clinicsMapper.insertClinics(clinics);
    }

    /**
     * 修改诊所信息管理
     *
     * @param clinics 诊所信息管理
     * @return 结果
     */
    @Override
    public int updateClinics(Clinics clinics) {
        System.out.println(clinics);
        //如果诊所状态为1，则存入redis
        if (clinics.getStatus() == 1&& clinics.getLogo()!=null) {
            System.out.println("修改logo地址存入redis");
            //存入redis
            redisTemplate.opsForValue().set("logoUrl", clinics.getLogo());
        }else{
            System.out.println("不存入redis");
        }
        return clinicsMapper.updateClinics(clinics);
    }

    @Autowired
    FileController fileController;
    /**
     * 批量删除诊所信息管理
     *
     * @param clinicIds 需要删除的诊所信息管理主键
     * @return 结果
     */
    @Override
    public int deleteClinicsByClinicIds(Long[] clinicIds) {
        for(Long id:clinicIds){
          Clinics clinics = clinicsMapper.selectClinicsByClinicId(id);
         if(clinics.getLogo()!=null){
             try {
                 fileController.deleteFile(clinics.getLogo());
             }catch (Exception e){
                 System.out.println("删除图片失败");
             }
         }

        }

        return clinicsMapper.deleteClinicsByClinicIds(clinicIds);
    }

    /**
     * 删除诊所信息管理信息
     *
     * @param clinicId 诊所信息管理主键
     * @return 结果
     */
    @Override
    public int deleteClinicsByClinicId(Long clinicId) {
        return clinicsMapper.deleteClinicsByClinicId(clinicId);
    }
}
